package com.xyht.medicine_management_system.modules.order.util;

import com.xyht.medicine_management_system.modules.order.constant.OrderConstant;
import com.xyht.medicine_management_system.modules.order.entity.MmsOrder;
import com.xyht.medicine_management_system.modules.order.mapper.MmsOrderMapper;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

import static com.xyht.medicine_management_system.common.util.ParamCheckUtil.isNullOrEmpty;

@Component
@Log4j2
public class OrderUtil {
    @Resource
    private MmsOrderMapper mmsOrderMapper;

    /**
     * 初始化订单
     *
     * @param userId 用户id
     * @return 初始化后的订单(生成失败返回 null)
     */
    public MmsOrder initializeOrder(String userId) {
        MmsOrder order = new MmsOrder();
        if (isNullOrEmpty(userId)) {
            return null;
        }
        order.setUserId(userId);
        order.setOrderStatus(OrderConstant.ORDER_STATUS_TO_BE_PAID);//待支付
        order.setIsRefund(OrderConstant.ORDER_IS_REFUND_NO);//无售后记录
        order.setIsRefunding(false); // 不在售后中
        order.setIsClose(OrderConstant.ORDER_IS_CLOSE_NO);//没有结束
        return order;
    }

    /**
     * 根据订单id校验订单是否已支付
     *
     * @param orderId 订单id
     * @return 是否已支付
     */
    public boolean isPaid(String orderId) {
        MmsOrder order = mmsOrderMapper.selectById(orderId);
        // 订单不存在
        if (order == null) {
            return false;
        }

        // 支付金额, 支付方式, 支付时间为空
        if (isNullOrEmpty(order.getPaymentAmount(), order.getPaymentMethod(), order.getPaymentTime())) {
            return false;
        }

        // 订单状态为待支付
        if (order.getOrderStatus() != null && order.getOrderStatus() == OrderConstant.ORDER_STATUS_TO_BE_PAID) {
            return false;
        }

        return true;
    }
}
